// Package entity 包含系统中的核心实体定义
package entity

import (
	"time"
)

// User 用户实体
// 定义了系统中用户的基本属性和行为
type User struct {
	ID        uint       `json:"id"`         // ID 用户唯一标识符
	Username  string     `json:"username"`   // Username 用户名
	Email     string     `json:"email"`      // Email 电子邮件地址
	Password  string     `json:"-"`          // Password 用户密码（JSON序列化时会被忽略）
	CreatedAt *time.Time `json:"created_at"` // CreatedAt 创建时间
	UpdatedAt time.Time  `json:"updated_at"` // UpdatedAt 最后更新时间
}

// NewUser 创建新用户实体
// 接收用户名、邮箱和密码作为参数，返回一个初始化的用户实体指针
func NewUser(username, email, password string) *User {
	now := time.Now()
	return &User{
		Username:  username,
		Email:     email,
		Password:  password,
		CreatedAt: &now,
		UpdatedAt: now,
	}
}
